package com.zpark.service.impl;

import com.zpark.dao.AdminDao;
import com.zpark.dao.ScoreDao;
import com.zpark.dao.impl.AdminDaoImpl;
import com.zpark.dao.impl.ScoreDaoImpl;
import com.zpark.entity.Admin;
import com.zpark.service.AdminService;

import javax.servlet.http.HttpSession;

public class AdminServiceImpl implements AdminService {
    private AdminDao adminDao = new AdminDaoImpl();

    @Override
    public boolean login(String username, String password) {
        /**
         * 1. 根据用户的用户名与密码进行数据查询：
         * 有数据表示用户输入正确
         * 用户输入正确表示登录成功
         * 2. 根据用的提交的用户名进行查询
         * 有数据表示用户名输入正确
         * 根据查询出来的数据中的 密码字段 与 用户提交的密码字段进行匹配（加密匹配）
         * 匹配成功则说明密码正确
         * 则代表登录成功
         * 匹配失败则表示密码错误
         */
        Admin admin = adminDao.selectByUsernameAndPassword(username, password);
        if (admin != null) {
            return true;
        }
        return false;
    }

    @Override
    public boolean logout(HttpSession session) {
        try {
            session.invalidate();
        } catch (Exception e) {
            return false;
        }
        return true;
    }

    @Override
    public boolean editPassword(Integer id, String oldPassword, String newPassword) {
        /**
         * oldPassword 旧密码如果想要校验的话，还需要在持久层创建一个对应的数据库操作
         */
        int i = adminDao.selectByIdAndPassword(id, oldPassword);
        if (i > 0) {
            adminDao.updatePasswordById(id, newPassword);
            return true;
        } else {
            //throw new RuntimeException("用户的旧密码不正确！");
            return false;
        }
    }

    private ScoreDao scoreDao = new ScoreDaoImpl();

    @Override
    public void checkChoice(Integer studentId, Integer courseId, Integer status) {
        //
        scoreDao.updateStatus(studentId, courseId, status);
    }
}
